CosyOS-II API 用户参考手册  1.0.3
宏定义
内核锁(服务层临界区)

OS内核级的临界区保护,会关闭系统中断(SysTick、PendSV),仅支持在任务中调用。 更多...

内核锁(服务层临界区) 的协作图:

宏定义

#define uKernelLock   su_kernel_lock()
 内核上锁(进入服务层临界区) 更多...
 
#define uKernelUnlock   su_kernel_unlock()
 内核解锁(退出服务层临界区) 更多...
 

详细描述

OS内核级的临界区保护,会关闭系统中断(SysTick、PendSV),仅支持在任务中调用。

注解
由 系统滴答、PendSV、内核锁,共同组成大的服务层临界区,当处理得当时,可实现全局的临界区保护。
实现过程:
任务中:对内核上锁后访问。
滴答中:直接访问即可。
中断中:采用中断挂起服务。
内核锁支持嵌套使用,最大嵌套深度255,内核上锁与内核解锁必须配对使用。
内核锁不会破坏零中断延迟,当需要全局的临界区保护时,应首先予以考虑。
内核锁应遵循快进快出的原则,临界段代码的执行时间应远小于系统滴答周期,否则可能会导致
丢失系统节拍、延误中断挂起服务和滴答服务的执行,对系统实时性造成不利影响。
当在任务中对事件标志组进行 设置位、清除位 等操作时,需采用内核锁。
当在任务中访问非原子全局变量时(包括读访问、写访问、自运算),
可采用内核锁实现全局的临界区保护(参见 全局变量访问示例)。

宏定义说明

#define uKernelLock   su_kernel_lock()

内核上锁(进入服务层临界区)

返回

在文件 ur_api.h1598 行定义.

#define uKernelUnlock   su_kernel_unlock()

内核解锁(退出服务层临界区)

返回

在文件 ur_api.h1604 行定义.